/* 菜单管理JS */

/**
 * 生成树形结构
 */
function generateTree(){
	
	// 判断是否有获取树形结构数据的权限
	if(window.hasAuthGetTree == "true"){
		
		// 1.发送Ajax请求获取树形结构数据
		$.ajax({
			url: window.getTreeUrl,
			type: "GET",
			data: {},
			dataType: "json",
			success: function(response){
				
				// 从response中获取result属性
				var result = response.result;
				
				// 判断成功
				if(result == "SUCCESS"){
					
					// 2.创建JSON对象用于存储对zTree所做的设置
					var setting = {
						view: {
							addDiyDom: myAddDiyDom,
							addHoverDom: myAddHoverDom,
							removeHoverDom: myRemoveHoverDom
						},
						data: {
							key: {
								url:"maomi"
							}
						}
					};
					
					// 3.初始化树形结构
					$.fn.zTree.init($("#treeDemo"), setting, response.data);
				}
				
				// 如果失败
				if(result == "FAILED"){
					// 提示信息
					layer.msg("操作失败！" + response.message);
				}
			},
			error: function(response){
				layer.msg("服务器端程序调用失败！响应状态码="+response.status+" 说明信息="+response.statusText);
			}
			
		});
	}
	
}

/**
 * 修改默认的图标
 */
function myAddDiyDom(treeId, treeNode){
	var aObj = $("#" + treeNode.tId + "_a");
	aObj.attr("data-url", treeNode.url);
	var icoObj = $("#" + treeNode.tId + "_ico"); // tId = permissionTree_1, $("#permissionTree_1_ico")
	if ( treeNode.icon ) {
		icoObj.removeClass("button ico_docu ico_open").addClass(treeNode.icon).css("background","");
	}
}

/**
 * 在鼠标移入节点范围时添加按钮组
 */
function myAddHoverDom(treeId, treeNode){
	var aObj = $("#" + treeNode.tId + "_a"); // tId = permissionTree_1, ==> $("#permissionTree_1_a")
	
	// 判断一下以前是否已经添加了按钮组
	if ($("#btnGroup"+treeNode.tId).length>0){
		return;
	}
	
	// 新增按钮
	var addBtn = window.hasAuthToAdd == "true" ? '<a data-id="'+treeNode.id+'" data-tId="'+treeNode.tId+'" class="'+window.toAddButton.button_class+' dropdown-toggle btn-xs showAddModalBtn" style="margin-left:10px;padding: 0 10px;" title="新增子菜单"><i class="'+window.toAddButton.icon_class+' rbg "></i></a>' : '';
	
	// 修改按钮
	var editBtn = window.hasAuthToEdit == "true" ? '<a data-id="'+treeNode.id+'" data-tId="'+treeNode.tId+'" class="'+window.toEditButton.button_class+' dropdown-toggle btn-xs showEditModalBtn" style="margin-left:10px;padding: 0 10px;" title="修改菜单"><i class="'+window.toEditButton.icon_class+' rbg "></i></a>' : '';
	
	// 删除按钮
	var removeBtn = window.hasAuthDelete == "true" ? '<a data-id="'+treeNode.id+'" data-tId="'+treeNode.tId+'" class="'+window.deleteButton.button_class+' dropdown-toggle btn-xs removeBtn" style="margin-left:10px;padding: 0 10px;" title="删除菜单"><i class="'+window.deleteButton.icon_class+' rbg "></i></a>' : '';
	
	// 授权按钮
	var assignBtn = window.hasAuthToAssignAuth == "true" ? '<a data-id="'+treeNode.id+'" data-tId="'+treeNode.tId+'" class="'+window.toAssignAuthButton.button_class+' dropdown-toggle btn-xs showAssignModalBtn" style="margin-left:10px;padding: 0 10px;" title="授权"><i class="'+window.toAssignAuthButton.icon_class+' rbg "></i></a>' : '';
	
	// 按钮组span
	var s = '<span id="btnGroup'+treeNode.tId+'">' ;
	
	// 如果是根节点，只有新增按钮
	if ( treeNode.level == 0 ) {
		s += addBtn;
	} 
	
	// 如果是一级节点
	else if ( treeNode.level == 1 ) {
		
		// 如果没有子节点，有修改、删除和新增按钮。如果有子节点，则不能删除。
		s += editBtn + (treeNode.children.length == 0 ? removeBtn + assignBtn : '') + addBtn;
	} 
	
	// 如果是二级节点，有修改和删除按钮，由于最多只有二级菜单，所有没有新增按钮
	else if ( treeNode.level == 2 ) {
		s += editBtn + removeBtn + assignBtn;
	}

	s += '</span>';
	
	// 追加按钮组
	aObj.append(s);
}

/**
 * 在鼠标离开节点范围时删除按钮组
 */
function myRemoveHoverDom(treeId, treeNode){
	$("#btnGroup"+treeNode.tId).remove();
}

/**
 * 生成分配权限树形结构
 */
function generateAssignAuthTree(){
	
	// 1.发送Ajax请求获取树形结构数据
	$.ajax({
		url: toAssignAuthButton.url,
		type: "GET",
		data: {
			menuId: window.menuId
		},
		dataType: "json",
		success: function(response){
			
			// 从response中获取result属性
			var result = response.result;
			
			// 判断成功
			if(result == "SUCCESS"){
				
				// 2.创建JSON对象用于存储对zTree所做的设置
				var setting = {
					view: {
						addDiyDom: myAuthAddDiyDom
					},
					check: {
						enable: true,
						chkboxType: {
							"Y" : "", // 被勾选时：取消父子联动
							"N" : ""  // 取消勾选时：取消父子联动
						}
					},
					data: {
						simpleData: {
							enable: true,
							pIdKey: "pid"
						}
					}
				};
				
				// 3.初始化树形结构
				$.fn.zTree.init($("#authTreeDemo"), setting, response.data);
			}
			
			// 如果失败
			if(result == "FAILED"){
				// 提示信息
				layer.msg("操作失败！" + response.message);
			}
		},
		error: function(response){
			layer.msg("服务器端程序调用失败！响应状态码="+response.status+" 说明信息="+response.statusText);
		}
		
	});
}

/**
 * 修改默认的图标
 */
function myAuthAddDiyDom(treeId, treeNode){
	var aObj = $("#" + treeNode.tId + "_a");
	aObj.attr("data-code", treeNode.code);
	aObj.attr("data-type", treeNode.type);
	aObj.attr("data-orderNum", treeNode.orderNum);
	if(treeNode.type == null){
		return;
	}
	var typeSpanClass = "label-default";
	switch(treeNode.type){
		case "菜单" :
			typeSpanClass = "label-primary"
			break;
		case "按钮" :
			typeSpanClass = "label-success"
			break;
		case "数据" :
			typeSpanClass = "label-info"
			break;
		case "页面" :
			typeSpanClass = "label-warning"
			break;
		case "文件" :
			typeSpanClass = "label-danger"
			break;
		default:
			break;
	}
	var typeSpan = '<span id="typeSpan'+treeNode.tId+'" class="label ' + typeSpanClass + '" style="padding:0 2px;display:inline-block;opacity:0.8;margin-left:10px;">' + treeNode.type + '</span>';
	aObj.append(typeSpan);
}